# vim:fileencoding=utf-8
## Ponto Greatful

import dataset, datetime, pytz, random, sqlite3

from plugins.greatful import greatminds, internetes

## Avisa que chegou na Fábrica do Futuro
def cheguei(args):
  hoje = datetime.datetime.isocalendar(datetime.datetime.now(pytz.timezone('America/Sao_Paulo')))
  responses = [
    u"%s Chegou chegando, desnorteando a Fábrica toda!" % (
      random.choice([
        u"\U0001f3b5",
        u"\U0001f3b6"
      ])
    ),
    u"Hoje é um great dia!",
    u"Bom dia! ...ou tarde, ou noite!",
    u"\U0001f64f",
    u"\U0001f64f\U0001f3fb",
    u"\U0001f64f\U0001f3fc",
    u"\U0001f64f\U0001f3fd",
    u"\U0001f64f\U0001f3fe",
    u"\U0001f64f\U0001f3ff",
    u"\U0001f64c",
    u"\U0001f64c\U0001f3fb",
    u"\U0001f64c\U0001f3fc",
    u"\U0001f64c\U0001f3fd",
    u"\U0001f64c\U0001f3fe",
    u"\U0001f64c\U0001f3ff",
    u"\U0001f44f",
    u"\U0001f44f\U0001f3fb",
    u"\U0001f44f\U0001f3fc",
    u"\U0001f44f\U0001f3fd",
    u"\U0001f44f\U0001f3fe",
    u"\U0001f44f\U0001f3ff",
    u"\U0001f91d",
    u"Sois vós!",
    u"%s" % ( ' '.join( random.sample( internetes,
      random.randrange( len(internetes) ) ) ) )
  ]
  try:
    semana_db = dataset.connect('sqlite:///semana.db')
    semana_db['chegada'].insert(dict(
      pessoa = args['from_id'],
      ano = hoje[0],
      semana = hoje[1],
      dia = hoje[2],
      hora = datetime.datetime.now(pytz.timezone('America/Sao_Paulo')).hour,
      texto = ' '.join(args['command_list'])
    ))
    return {
      'status': True,
      'type': args['command_type'],
      'response': random.choice(responses),
      'debug': 'cheguei',
      'multi': False,
      'parse_mode': None,
      'reply_to_message_id': args['message_id'],
    }
  except sqlite3.ProgrammingError as e:
    response = u"Não consegui enviar para a agenda hebdomadária que vós chegardes agora. Os desenvolvedores serão notificados de qualquer forma. Mas tente novamente, por favor."
    debug = u"Workrave (cheguei) falhou.\nExceção sqlite: %s" % (e)
  except Exception as e:
    response = u"Não consegui enviar para a agenda hebdomadária que vós chegardes agora. Os desenvolvedores serão notificados de qualquer forma. Mas tente novamente, por favor."
    debug = u"Workrave (cheguei) falhou.\nExceção: %s" % (e)
  return {
    'status': False,
    'type': 'erro',
    'response': response,
    'debug': debug,
    'multi': False,
    'parse_mode': None,
    'reply_to_message_id': args['message_id'],
  }

## Avisa que foi embora da Fábrica do Futuro
def vazei(args):
  hoje = datetime.datetime.isocalendar(datetime.datetime.now(pytz.timezone('America/Sao_Paulo')))
  responses = [
    u"A Fábrica é boa, mas não dá pra morar aí!",
    u"Hoje foi um great dia!",
    u"Amanhã vai ser outro dia!",
    u"%s Amanhã vai ser outro dia!" % (
      random.choice([
        u"\U0001f3b5",
        u"\U0001f3b6"
      ])
    ),
    u"Banoite!",
    u"Obrigada pelo dia de hoje!",
    u"\U0001f540",
    u"\U0001f540\U0001f3fb",
    u"\U0001f540\U0001f3fc",
    u"\U0001f540\U0001f3fd",
    u"\U0001f540\U0001f3fe",
    u"\U0001f540\U0001f3ff",
    u"\U0001f91f",
    u"\U0001f91f\U0001f3fb",
    u"\U0001f91f\U0001f3fc",
    u"\U0001f91f\U0001f3fd",
    u"\U0001f91f\U0001f3fe",
    u"\U0001f91f\U0001f3ff",
    u"✌️",
    u"✌️\U0001f3fb",
    u"✌️\U0001f3fc",
    u"✌️\U0001f3fd",
    u"✌️\U0001f3fe",
    u"✌️\U0001f3ff",
    u"\U0001f44b"
    u"\U0001f44b\U0001f3fb",
    u"\U0001f44b\U0001f3fc",
    u"\U0001f44b\U0001f3fd",
    u"\U0001f44b\U0001f3fe",
    u"\U0001f44b\U0001f3ff",
    u"Sois vós!",
    u"%s" % ( ' '.join( random.sample( internetes,
      random.randrange( len(internetes) ) ) ) )
  ]
  try:
    semana_db = dataset.connect('sqlite:///semana.db')
    semana_db['vazada'].insert(dict(
      pessoa = args['from_id'],
      ano = hoje[0],
      semana = hoje[1],
      dia = hoje[2],
      hora = datetime.datetime.now(pytz.timezone('America/Sao_Paulo')).hour,
      texto = ' '.join(args['command_list'])
    ))
    return {
      'status': True,
      'type': args['command_type'],
      'response': random.choice(responses),
      'debug': 'vazei',
      'multi': False,
      'parse_mode': None,
      'reply_to_message_id': args['message_id'],
    }
  except sqlite3.ProgrammingError as e:
    response = u"Não consegui enviar para a agenda hebdomadária que vós vazardes agora. Os desenvolvedores serão notificados de qualquer forma. Mas tente novamente, por favor."
    debug = u"Workrave (vazei) falhou.\nExceção sqlite: %s" % (e)
  except Exception as e:
    response = u"Não consegui enviar para a agenda hebdomadária que vós vazardes agora. Os desenvolvedores serão notificados de qualquer forma. Mas tente novamente, por favor."
    debug = u"Workrave (vazei) falhou.\nExceção: %s" % (e)
  return {
    'status': False,
    'type': 'erro',
    'response': response,
    'debug': debug,
    'multi': False,
    'parse_mode': None,
    'reply_to_message_id': args['message_id'],
  }

## Avisa que fez uma merda
def adubei(args):
  hoje = datetime.datetime.isocalendar(datetime.datetime.now(pytz.timezone('America/Sao_Paulo')))
  responses = [
    {'type': args['command_type'], 'text': u"Adubando a gente dá.\nO ato de dar gera abundância.\nEntão, dar abunda!"},
    {'type': args['command_type'], 'text': u"Todo adubo é fertilizante para o limoeiro.\nTodo limão é uma limonada."},
    {'type': args['command_type'], 'text': u"Plante as sementes.\nColha os milhões."},
    {'type': args['command_type'], 'text': u"Vós sois padawan e terdes tempo pra aprender."},
    {'type': args['command_type'], 'text': u"Tentai outra vez."},
    {'type': args['command_type'], 'text': u"\U0001f4a9"},
    {'type': args['command_type'], 'text': u"\U0001f4a9\U0001f4a9\U0001f4a9"},
    {'type': args['command_type'], 'text': u"\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9"},
    {'type': args['command_type'], 'text': u"%s Não diga que a canção está perdida. Tenha fé em Ateus, tenha fé na vida." % (
      random.choice([
        u"\U0001f3b5",
        u"\U0001f3b6"
      ])
    )},
    {'type': 'sticker', 'text': 'sticker', 'sticker': random.choice(greatminds)}
  ]
  response = random.choice(responses)
  try:
    semana_db = dataset.connect('sqlite:///semana.db')
    semana_db['adubada'].insert(dict(
      pessoa = args['from_id'],
      ano = hoje[0],
      semana = hoje[1],
      dia = hoje[2],
      hora = datetime.datetime.now(pytz.timezone('America/Sao_Paulo')).hour,
      texto = ' '.join(args['command_list'])
    ))
    return {
      'status': True,
      'type': response.get('type', args['command_type']),
      'response': response['text'],
      'sticker': response.get('sticker', None),
      'debug': 'adubei',
      'multi': False,
      'parse_mode': None,
      'reply_to_message_id': args['message_id'],
    }
  except sqlite3.ProgrammingError as e:
    response = u"Não consegui enviar para a agenda hebdomadária que vós adubardes agora. Os desenvolvedores serão notificados de qualquer forma. Mas tente novamente, por favor."
    debug = u"Workrave (adubei) falhou.\nExceção sqlite: %s" % (e)
  except Exception as e:
    response = u"Não consegui enviar para a agenda hebdomadária que vós adubardes agora. Os desenvolvedores serão notificados de qualquer forma. Mas tente novamente, por favor."
    debug = u"Workrave (adubei) falhou.\nExceção: %s" % (e)
  return {
    'status': False,
    'type': 'erro',
    'response': response,
    'debug': debug,
    'multi': False,
    'parse_mode': None,
    'reply_to_message_id': args['message_id'],
  }

